// This file was generated automatically. See  generateTestDataForTypeScriptWithFileExport.kt
// DO NOT MODIFY IT MANUALLY.

// CHECK_TYPESCRIPT_DECLARATIONS
// SKIP_NODE_JS
// INFER_MAIN_MODULE
// MODULE: JS_TESTS
// JS_MODULE_KIND: ES
// WITH_STDLIB
// FILE: esm.kt

@file:JsExport

package foo

import kotlin.js.Promise


val value = 10


var variable = 10


class C(val x: Int) {
    fun doubleX() = x * 2
}


object O {
    val value = 10
}


object Parent {
    val value = 10
    class Nested {
        val value = 10
    }
}

// KT-79926

interface AnInterfaceWithCompanion {
    companion object {
        private val privateValue = "OK"
        val someValue = privateValue
        const val constValue = "OK"
    }
}

// Should be uncommented when KT-82128 is done
//
//interface InterfaceWithNamedCompanion {
//    companion object Name {
//        private val privateValue = "OK"
//        val someValue = privateValue
//        const val constValue = "OK"
//    }
//}


interface InterfaceWithCompanionWithStaticFun {
    companion object {
        @JsStatic
        fun bar() = "OK"
    }
}


interface I {
    fun foo(): String
}


interface InterfaceWithCompanionWithInheritor {
    companion object : I {
        override fun foo(): String = "OK"
    }
}


interface InterfaceWithCompanionWithInheritorAndStaticFun {
    companion object : I {
        @JsStatic
        override fun foo(): String = "OK"
    }
}


fun box(): String = "OK"


fun asyncList(): Promise<List<Int>> =
    Promise.resolve(listOf(1, 2))


fun arrayOfLists(): Array<List<Int>> =
    arrayOf(listOf(1, 2))

@JsExport.Default
fun justSomeDefaultExport() = "OK"